</center> Автор материала: программист-исследователь Mail.ru Group, старший преподаватель Факультета Компьютерных Наук ВШЭ Юрий Кашницкий. Материал распространяется на условиях лицензии Creative Commons CC BY-NC-SA 4.0. Можно использовать в любых целях (редактировать, поправлять и брать за основу), кроме коммерческих, но с обязательным упоминанием автора материала.
Заполните код в клетках (где написано "Ваш код здесь") и ответьте на вопросы в веб-форме.
In [1]:
import numpy as np
import pandas as pd
%matplotlib inline
Считаем данные из файла в память в виде объекта Pandas.DataFrame
In [2]:
data = pd.read_csv('../../data/titanic_train.csv',
index_col='PassengerId')
Данные представлены в виде таблицы. Посмотрим на первые 5 строк:
In [3]:
data.head(5)
Out[3]:
In [4]:
data.describe()
Out[4]:
Для примера отберем пассажиров, которые сели в Cherbourg (Embarked=C) и заплатили более 200 у.е. за билет (fare > 200).
Убедитесь, что Вы понимаете, как эта конструкция работает.
Если нет – посмотрите, как вычисляется выражение в квадратных в скобках.
In [5]:
data[(data['Embarked'] == 'C') & (data.Fare > 200)].head()
Out[5]:
Можно отсортировать этих людей по убыванию платы за билет.
In [6]:
data[(data['Embarked'] == 'C') &
(data['Fare'] > 200)].sort_values(by='Fare',
ascending=False).head()
Out[6]:
Пример создания признака.
In [7]:
def age_category(age):
'''
< 30 -> 1
>= 30, <55 -> 2
>= 55 -> 3
'''
if age < 30:
return 1
elif age < 55:
return 2
else:
return 3
In [8]:
age_categories = [age_category(age) for age in data.Age]
In [9]:
data['Age_category'] = age_categories
Другой способ – через apply
.
In [10]:
data['Age_category'] = data['Age'].apply(age_category)
1. Сколько мужчин / женщин находилось на борту?
In [12]:
data['Sex'].value_counts()
Out[12]:
2. Выведите распределение переменной Pclass
(социально-экономический статус) и это же распределение, только для мужчин / женщин по отдельности. Сколько было мужчин 2-го класса?
In [15]:
data[data['Sex'] == 'male']['Pclass'].value_counts()
Out[15]:
3. Каковы медиана и стандартное отклонение платежей (Fare
)? Округлите до 2 десятичных знаков.
In [18]:
print(
"Медиана – {0}, стандартное отклонение – {1}".format(
round(data['Fare'].median(), 2),
round(data['Fare'].std(), 2)
)
)
4. Правда ли, что люди моложе 30 лет выживали чаще, чем люди старше 60 лет? Каковы доли выживших в обеих группах?
In [27]:
yang = data[data['Age'] < 30]
old = data[data['Age'] > 60]
old['Survived'].value_counts(normalize=True)
Out[27]:
5. Правда ли, что женщины выживали чаще мужчин? Каковы доли выживших в обеих группах?
In [33]:
female = data[data['Sex'] == 'female']
male = data[data['Sex'] == 'male']
male['Survived'].value_counts(normalize=True)
Out[33]:
6. Найдите самое популярное имя среди пассажиров Титаника мужского пола?
In [ ]:
7. Сравните графически распределение стоимости билетов и возраста у спасенных и у погибших. Средний возраст погибших выше, верно?
In [17]:
# Ваш код здесь
8. Как отличается средний возраст мужчин / женщин в зависимости от класса обслуживания? Выберите верные утверждения:
In [18]:
# Ваш код здесь